package com.hmall.api.item;

import com.hmall.api.item.dto.ItemDTO;
import com.hmall.api.item.dto.OrderDetailDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;

import java.util.Collection;
import java.util.List;


/**
 * 商品服务降级处理
 */
@Slf4j
@Component
public class ItemClientFallbackFactory implements FallbackFactory<ItemClient> {
    @Override
    public ItemClient create(Throwable cause) {
        return new ItemClient() {
            /**
             * 根据id批量查询商品
             * @param ids
             * @return
             */
            @Override
            public List<ItemDTO> queryItemByIds(Collection<Long> ids) {
                log.error("远程调用ItemClient#queryItemByIds方法出现异常，参数：{}", ids, cause);
                return List.of();
            }

            /**
             * 扣减库存
             * @param items
             */
            @Override
            public void deductStock(List<OrderDetailDTO> items) {
                log.error("远程调用ItemClient#deductStock扣减库存失败,参数:{}", items, cause);
            }

            /**
             * 根据id查询商品
              * @param id
             * @return
             */
            @Override
            public ItemDTO queryItemById(Long id) {
                log.error("远程调用ItemClient#queryItemByIds方法出现异常，参数：{}", id, cause);
                return null;
            }

            /**
             * 新增商品
             * @param item
             */
           /* @Override
            public void saveItem(ItemDTO item) {
                log.error("远程调用ItemClient#saveItem方法出现异常，参数：{}", item, cause);

            }

            *//**
             * 根据id删除商品
             * @param id
             *//*
            @Override
            public void deleteItemById(Long id) {
                log.error("远程调用ItemClient#deleteItemById方法出现异常，参数：{}", id, cause);
            }*/
        };
    }
}
